package org.shj.pattern.strategy;


/**
 * 策略模式： 它定义了算法家族，分别封装起来，让它们之间可以互相替换，此模式让算法的变化，不会影响到使用算法的客户端
 * 使用场景： 1. 如果在一个系统里面有许多类，它们之间的区别仅在于它们的行为，那么使用策略模式可以让一个对象在许
 * 						多行为中选择一种行为
 * 				 2. 一个系统需要动态地在几种算法中选择一种
 * 			   3. 如果一个对象有很多的行为，如果不用恰当的模式，这些行为就只好使用多重的条件选择语句来实现
 * 
 * 策略模式与简单工厂模式相结合后，比单独使用简单工厂有如下好处：
 * 客户端只需要知道 CashContext一个类, 而简单工厂则需要知道两个类
 */
public class Main {

	public static void main(String[] args){
		CashContext ctx = new CashContext("打8折");
		System.out.println(ctx.getResult(100));
	}
}
